home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekikoh Dennoh Club 1
/
Gekikoh Dennoh Club Vol. 1 (Japan).7z
/
Gekikoh Dennoh Club Vol. 1 (Japan) (Track 1).bin
/
kowin
/
archive
/
net
/
chatwins.lzh
/
fnckey.c
< prev
next >
Wrap
C/C++ Source or Header
|
1993-05-10
|
1KB
|
78 lines
/* Copyright 1993 H.Ogasawara (COR.) */
#include <corlib.h>
extern int Exec();
char fnckeylst[20][42];
static inline
send_1char( wp, ch )
WindowID wp;
{
EventInfo dummy;
dummy.option= EventKey;
dummy.ShiftStat= 0;
dummy.KeyCode= ch;
Exec( wp, &dummy );
}
keyinput( wp, code )
WindowID wp;
{
unsigned char *ptr= (unsigned char*)(fnckeylst[code]);
for(; *ptr ; send_1char( wp, *ptr++ ) );
}
makestr( str, ptr )
unsigned char *str, *ptr;
{
int kanji= FALSE;
for(; *ptr ; ptr++ ){
if( kanji ){
kanji= FALSE;
*str++= *ptr;
}else switch( *ptr ){
case '\\':
switch( *++ptr ){
case 'n':
*str++= '\n';
break;
case 'r':
*str++= '\r';
break;
case 'x':
*str= (((*ptr>'9' ? *ptr-7 : *ptr)&15)<<8)+
((ptr[1]>'9' ? ptr[1]-7: ptr[1])&15);
ptr++;
break;
default:
*str++= *ptr;
}
break;
case '\n':
case '\r':
break;
default:
if( (*ptr>=0x80&&*ptr<0xa0) || (*ptr>=0xe0) )
kanji= TRUE;
*str++= *ptr;
}
}
*str= '\0';
}
read_fncfile( name )
char *name;
{
FILE *fp;
if( fp= fopen( name, "r" ) ){
int i= 0;
char buf[42];
for(; i < 20 && fgets( buf, 40, fp ) ; i++ )
makestr( fnckeylst[i], buf );
fclose( fp );
return TRUE;
}
return FALSE;
}